package org.jeecg.modules.htxincailiao.account.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.htxincailiao.account.constant.HTAccountTypeEnum;
import org.jeecg.modules.htxincailiao.account.domain.bo.*;
import org.jeecg.modules.htxincailiao.account.domain.vo.HTUserInfoVO;
import org.jeecg.modules.htxincailiao.account.domain.vo.HTUserStatisticsVO;
import org.jeecg.modules.htxincailiao.account.entity.HTPlatformUser;
import org.jeecg.modules.htxincailiao.im.domain.bo.IMUserAddBO;
import org.jeecg.modules.system.entity.SysUser;

public interface IHTAccountService{


    public HTPlatformUser queryFrontendUserByUsername(String username);

    public HTPlatformUser queryFrontendUserByPhoneNumber(String phoneNumber);

    public HTPlatformUser queryFrontendUserByEmail(String email);

    public HTPlatformUser queryUserById(String id);

    public HTPlatformUser queryFrontendUserByMultipleFactor(String username, String phoneNumber, String email);

    /*
     * 验证账号是否存在
     * username 用户名
     * phoneNumber 手机号
     * email 邮箱
     */
    public boolean validateAccountExistByMultipleFactor(String username, String phoneNumber, String email);


    public HTUserInfoVO getUserInfo(HTAccountTypeEnum accountType, String userId);

    public boolean updateUserInfo(HTUserUpdateBO bo);

    public boolean upgradeUser(HTAccountUpgradeBO bo);

    public boolean resetPassword(HTResetPasswordBO bo);

    public boolean editPhoneNumber(HTEditPhoneNumberBO bo, HTPlatformUser user);

    public boolean bindTencentAccountBy(HTPlatformUser user);

    public boolean certificateAudit(HTUserUpdateBO bo);

    public boolean certificateSubmit(HTCertificateSubmitBO bo);


    public Page<HTPlatformUser> queryUserListByCertificateAuditStatus(Page<HTPlatformUser> page, Integer certificateAuditStatus);

    public boolean handleSignUpForMember(HTAccountAddBO bo);

    public boolean handleSignUpForMerchant(HTAccountAddBO bo);


    public boolean handleSignUpForImUser(IMUserAddBO bo);


    public SysUser handleSysUserForSignUp(HTAccountAddBO bo);

  public HTUserStatisticsVO queryStatistics(String dayTime);

}
